import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart';
import 'package:interview/utils/logger.dart';

class SearchHistoryController extends GetxController {
  final GetStorage _storage = GetStorage("search_history_box"); // 指定命名空间
  final String _key = "search_history_box";
  final int _maxRecords = 12;

  // 响应式的搜索历史记录
  RxList<String> searchHistory = <String>[].obs;

  @override
  void onInit() {
    super.onInit();
    _loadSearchHistory(); // 加载本地存储的数据
  }

  // **加载本地存储的搜索记录**
  void _loadSearchHistory() {
    // 从存储中读取数据
    final storedHistory = _storage.read<List<dynamic>>(_key);

    // 如果有数据，将其转换为响应式的 RxList
    if (storedHistory != null) {
      searchHistory.addAll(storedHistory.whereType<String>()); // 确保是 String 类型
    }
  }

  // **添加新的搜索关键词**
  void addSearchKeyword(String keyword) {
    if (keyword.isEmpty || searchHistory.contains(keyword)) {
      return; // 避免空值或重复值
    }

    // 超过最大记录限制，移除最早的记录
    if (searchHistory.length >= _maxRecords) {
      searchHistory.removeAt(0);
    }

    // 添加新关键词到列表
    searchHistory.add(keyword);
    Logger.info("$searchHistory" , tag: "addSearchKeyword");
    // 将更新后的列表保存到本地存储
    _storage.write(_key, searchHistory.toList()); // 转为普通列表保存
  }

  // **清空所有历史记录**
  void clearSearchHistory() {
    searchHistory.clear();
    _storage.remove(_key); // 移除存储中的数据
    update();
  }

  void removeSearchKeyword(String keyword){
    if(keyword.isEmpty){
      return;
    }
    searchHistory.remove(keyword);
    _storage.write(_key, searchHistory.toList());
  }
}

